package com.acwing.partition43;

import java.io.*;

/**
 * @author rkc
 * @date 2022/7/26 9:42
 */
public class AC4240青蛙 {

    private static final int N = 210;
    private static double[][] g = new double[N][N];
    private static int[][] p = new int[N][2];
    private static double[] dist = new double[N];
    private static boolean[] st = new boolean[N];
    private static int n, k = 1;

    private static StreamTokenizer tokenizer = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    private static PrintWriter writer = new PrintWriter(new OutputStreamWriter(System.out));

    public static void main(String[] args) throws IOException {
        while (true) {
            n = nextInt();
            if (n == 0) break;
            for (int i = 1; i <= n; i++) p[i] = new int[] {nextInt(), nextInt()};
            //预处理出任意两点之间的距离，然后进行二分，使最大值最小
            double l = 0, r = 0;
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= n; j++) {
                    if (i != j) {
                        g[i][j] = get(i, j);
                        r = Math.max(r, g[i][j]);
                    }
                }
            }
            while (r - l > 1e-6) {
                double mid = (l + r) / 2;
                if (dijkstra(1, 2, mid)) r = mid;
                else l = mid;
            }
            writer.format("Scenario #%d\nFrog Distance = %.3f\n\n", k++, l);
        }
        writer.flush();
    }

    private static boolean dijkstra(int src, int dest, double limit) {
        for (int i = 1; i <= n; i++) {
            dist[i] = 0x3f3f3f3f;
            st[i] = false;
        }
        dist[src] = 0;
        for (int k = 0; k < n; k++) {
            int u = -1;
            for (int i = 1; i <= n; i++) {
                if (!st[i] && (u == -1 || dist[i] < dist[u])) {
                    u = i;
                }
            }
            st[u] = true;
            for (int i = 1; i <= n; i++) {
                if (g[u][i] >= limit) continue;
                dist[i] = Math.min(dist[i], dist[u] + g[u][i]);
            }
        }
        return dist[dest] != 0x3f3f3f3f;
    }

    private static double get(int i, int j) {
        int x1 = p[i][0], y1 = p[i][1], x2 = p[j][0], y2 = p[j][1];
        return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
    }

    private static int nextInt() throws IOException {
        tokenizer.nextToken();
        return (int) tokenizer.nval;
    }
}
